const fs = require('fs');
const path = require('path');
const yaml = require('js-yaml');

/**
 * 加载YAML配置文件
 * @returns {Object} 配置对象
 */
function loadConfig() {
    try {
        const configPath = path.join(__dirname, 'config.yaml');
        const configContent = fs.readFileSync(configPath, 'utf8');
        const config = yaml.load(configContent);

        // 验证配置
        validateConfig(config);

        return config;
    } catch (error) {
        console.error('加载配置文件失败:', error);
        console.error('请确保config.yaml文件存在且格式正确');
        process.exit(1);
    }
}

/**
 * 验证配置是否包含必要的字段
 * @param {Object} config 配置对象
 */
function validateConfig(config) {
    // 验证服务器配置
    if (!config.server) {
        throw new Error('缺少服务器配置 (server)');
    }
    if (!config.server.port) {
        throw new Error('缺少服务器端口配置 (server.port)');
    }
    if (!config.server.secret) {
        throw new Error('缺少Gitee webhook密钥配置 (server.secret)');
    }

    // 验证邮箱配置
    if (!config.email) {
        throw new Error('缺少邮箱配置 (email)');
    }
    if (!config.email.service) {
        throw new Error('缺少邮箱服务配置 (email.service)');
    }
    if (!config.email.user) {
        throw new Error('缺少邮箱用户配置 (email.user)');
    }
    if (!config.email.pass) {
        throw new Error('缺少邮箱密码配置 (email.pass)');
    }
    if (!config.email.to) {
        throw new Error('缺少邮箱接收者配置 (email.to)');
    }

    // 验证仓库配置
    if (!config.repositories || Object.keys(config.repositories).length === 0) {
        throw new Error('缺少仓库配置 (repositories)');
    }
}

// 加载配置
const config = loadConfig();

module.exports = config;
